package com.nuedu.corejava.ch9;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Pattern;

public class DateClass {
	public static void main(String[] args) {
		//时间
		//如何获取当前时间
		Date now = new Date();
		System.out.println(now.getTime());
		
		long time = System.currentTimeMillis();//unix - 在有些数据库实际中，使用long保存时间；
		now = new Date(time);
		System.out.println(time);
		
		
		//日历
		Calendar clCalendar = Calendar.getInstance();
		//年，月，日
		String datString = new Integer(clCalendar.get(clCalendar.YEAR)).toString();
		System.out.println(datString);
		
		//使用calendar读取的月份是0~11
		datString = new Integer(clCalendar.get(clCalendar.MONTH)+1).toString();
		System.out.println(datString);
		datString = new Integer(clCalendar.get(clCalendar.DATE)).toString();
		System.out.println(datString);
		//获得星期，星期是从星期天开始的，范围是1~7 ，
		datString = new Integer(clCalendar.get(clCalendar.DAY_OF_WEEK)-1).toString();
		System.out.println(datString);
		
		
		//时  分  秒
		//12小时进制 0~11
		datString = new Integer(clCalendar.get(clCalendar.HOUR)).toString();
		System.out.println(datString);
		
		//24小时进制 0~23
		datString = new Integer(clCalendar.get(clCalendar.HOUR_OF_DAY)).toString();
		System.out.println(datString);
		
		//分钟
		datString = new Integer(clCalendar.get(clCalendar.MINUTE)).toString();
		System.out.println(datString);
		
		//秒
		datString = new Integer(clCalendar.get(clCalendar.SECOND)).toString();
		System.out.println(datString);
		//毫秒
		datString = new Integer(clCalendar.get(clCalendar.MILLISECOND)).toString();
		System.out.println(datString);
		
		//时间的计算
		//java.util.Date没有提供计算时间的方法，时间一般使用Calendar进行；
		//3天后
		clCalendar.set(clCalendar.DATE, clCalendar.get(clCalendar.DATE)+3);
		System.out.println(clCalendar.get(clCalendar.DATE));
		
		//3个月以前
		clCalendar.set(clCalendar.MONTH, clCalendar.get(clCalendar.MONTH)-3);
		System.out.println(clCalendar.get(clCalendar.MONTH)+1);

		//时间与时间字符串间的传唤
		//2018-8-7 15:15:15:234
		// 2018年8月7日  15时15分15秒234毫秒
		//YYYY-年 ，MM-月 dd-日 HH-24小时，mm-分钟，ss-秒钟，SS-毫秒
		String pattern = "yyyy-MM-dd HH:mm:ss:SS";
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		
		try {
			Date date = sdf.parse("2019-8-7 15:15:15:234");
			System.out.println(date);
			pattern = "yyyy年MM月dd日  EE HH时mm分ss秒SS毫秒";
			sdf.applyPattern(pattern);//修改时间格式
			
			String dateString2 = sdf.format(date);
			System.out.println(dateString2);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	
	
	}

}
